The present invention is related to digital electronics products with embedded software operating systems, and more particularly related to a system and method of updating, correcting, modifying or upgrading the embedded software in such digital products before or after the products have been released to market by use of software patches.
Progress and innovation in digital technology have changed how people live, work or play. The miniaturization of computers, cellular phones, personal digital assistances (xe2x80x9cPDAxe2x80x9d), simple pagers, PCMCIA wireless modem cards, or other wireless modem cards using public standard or proprietary I/O connectors offer prime examples of how technology makes themselves more and more indispensable. Together, they help people work more efficiently and productive, stay connected with loved ones and have more access to information and entertainment.
For the digital products, such as cellular phones, PDAs and set-top boxes, their digital technology is based on large-scale embedded software system. Embedded software systems in those digital products normally have more than tens of thousands of lines in their source codes. And inevitably, software bugs exist in these embedded software systems that may cause malfunctions in the digital products. Some bugs that are so fatal may even force manufactures to recall their digital products. Due to the cost involved in a product recall, some manufactures have decided to avoid certain market space altogether, or at least until production quality and reliability improve. Of course, the resulting public relations (xe2x80x9cPRxe2x80x9d) nightmare and potential loss of consumer confidence also play a significant role in their decisions.
Despite improvement in various stages of digital product development and manufacturing, defects are invariably part of the process. Further, as digital products become more advanced and complex, they are more vulnerable to bugs or defects in software, hardware, material or manufacturing. Many preventive measures can be implemented to minimize or detect defects before the products are released to the end users. However, once the digital products are released to the field, efforts to fix bugs or defects may become a potential recall nightmare. For defects occurring in limited lots, the end users may be asked to return the products for service or replacement. The end users may tolerate such inconvenience if it rarely occurs and if the vendors provide loan units for the time being.
For defects in massive scales involving many lots, the end users may still be asked to bring the digital products back for service or replacement. However, in such massive scales, the vendors may not even have enough resources to timely repair or replace the defective units. While loaners can be offered to the end users for the duration, the vendors must first have that many units in stock for temporary usage by the end users. Such temporary usage presents a loss of revenue opportunity for those units in stock, since the vendors cannot put them in their ordinary and profitable use.
Additionally, even after a digital product has been released to the field, manufactures will sometimes go through improvement, enhancement or upgrades, which may require a change in the embedded software. For major changes, manufactures may generate a new round of product release, which may be costly but necessary. However, for minor changes, they are confronted with the choice of having to go through a premature product release, or holding off until there are many minor changes to be made. A premature and untimely product release drains the company""s resources, while holding off risks antagonizing the end users who might complain about the minor inconvenience.
Therefore, it is desirable to minimize product recall for those digital products based on embedded software systems.
It is also desirable to minimize intermediary product releases for those digital products.
It is also desirable to be able to fix, repair, update, upgrade or enhance those digital products with reduced rounds of product release.
The present invention is directed to a method and system for an embedded software update system, which helps manufactures or vendors avoid costly product recall activities in the event their digital products have field software errors (xe2x80x9cbugsxe2x80x9d) or hardware problems. One aspect of the present invention is directed to an error correction system, which remotely corrects these software errors and minimizes influences of hardware problems. Another aspect of the present invention is directed to a software updating system, which is capable of updating software modules in the digital products by use of software patches. The software patch system of the present invention facilitates manufactures"" transmitting software patches to the xe2x80x9con-the-flyxe2x80x9d digital products to fix software errors and minimize influences of hardware problems. The software patch may also contain new parameters for updating some data area in NVM (Non Volatile Memory), EEPROM (Electrically Erasable Programmable Read-Only Memory) memory of a digital product, which is quite useful when service providers or manufactures want to modify some service features or product features.
The software update system of the present invention has advantages over the conventional software upgrade/updating systems. The software update system only needs comparatively small memory space to save software patches for bug fixes, or for key modules update. This is particularly advantageous to the small, portable digital products, whereas conventional software update/upgrade systems require large memory space to contain the whole application data of a new software version received for upgrade.
The proposed update system requires only limited network resources for patch data transmission, since each patch size is normally very small, whereas conventional software upgrade/updating systems require much more bandwidth or network resources for transmitting the big blocks of application data for software version updating.
Due to the ever-increasing pace for technology advancement in digital products, new standards, specifications and service features are being upgraded much sooner than before. Such upgrade would normally require new digital hardware to support the new advanced features. Another aspect of the software patch system of the present invention makes it simpler and more economic to do upgrades through software, thus minimizing the need to do frequent hardware changes. Additionally, the software update system of the present invention can be added to fix problems hidden in the operating system that support application downloading, such as Java Virtual Machines, or BREW (xe2x80x9cBinary Runtime Environment for Wirelessxe2x80x9d).
A further aspect of the present invention separates embedded software intended for digital products into multiple sections and only updates the necessary sections. This approach is advantageous over the conventional approach of having to update the total system, since it will optimize usage of resources for network transmission.
Hardware designs for CPU, MCU or DSP processors may also include the mechanism of checking update software in accordance with the present invention before running a software section. CPU/MCU/DSP can be designed in such a way that it is capable of automatically checking software update information while running the embedded software, and automatically jumping to the updated code address when software update is available.